#ifndef _PARSER_H
#define _PARSER_H

#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>

// =============================================================================
//  Déclaration de la classe Parser.
// =============================================================================

class Parser
{
	public:
		Parser() {}
		~Parser() {}
		
		std::vector<std::vector<std::string>*>* ParseFile(char* p_cFileName);
		
	private:
		std::vector<std::string>* Split(std::string p_sString, const char* p_cSeparator);
	
};

// =============================================================================
//  Implantation des fonctions membres.
// =============================================================================

std::vector<std::string>* Parser::Split(std::string p_sString, const char* p_cSeparator)
{
	std::vector<std::string>* sResult = new std::vector<std::string>();
	std::string::size_type stSepPos = p_sString.find(p_cSeparator);
	
	while(stSepPos != std::string::npos && stSepPos > 0 && p_sString[0] != '/')
	{
		sResult->push_back(p_sString.substr(0, stSepPos));
		p_sString = p_sString.substr(stSepPos + 1);
		stSepPos = p_sString.find(p_cSeparator);
	}
	
	if (p_sString[0] != '/')
		sResult->push_back(p_sString);
	
	return sResult;
} 

// -----------------------------------------------------------------------------
std::vector<std::vector<std::string>*>* Parser::ParseFile(char* p_fileName)
{
	std::ifstream file(p_fileName);
	
	if(file)
	{
		std::cout << "Ouverture du fichier : " << p_fileName << std::endl;

		//Recupération des données par ligne puis par std::string
		std::string sLine;
		std::vector<std::vector<std::string>*>* sAllLines = new std::vector<std::vector<std::string>*>();
		
		while(std::getline(file, sLine))
		{
			std::vector<std::string>* sSplit = Split(sLine, " ");
			if (sSplit != NULL)
				sAllLines->push_back(sSplit);
		}
		
		std::cout << "Le nombre de ligne :" << sAllLines->size() << std::endl;
		file.close();
		return sAllLines;
	}
	else 
	{
		std::cout<< "Impossible d'ouvrir le fichier !" << std::endl;
		return NULL;
	}
}

#endif // _PARSER_H
